 /*******************************************************************************
  * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM - Initial API and implementation
  *******************************************************************************/
 package org.eclipse.update.internal.jarprocessor;

 import java.io.File ;
 import java.util.List ;
 import java.util.Properties ;

 /**
  * @author aniefer@ca.ibm.com
  *
  */
 public interface IProcessStep {
     
     /**
      * The effect of this processing step if the JarProcessor was to recurse on this entry.
      * Return null if this step will not do anything with this entry.
      * Return the new entryName if this step will modify this entry on recursion.
      * @param entryName
      * @return
      */
     public String recursionEffect(String entryName);
     
     /**
      * Perform some processing on the input file before the JarProcessor considers the entries for recursion.
      * return the file containing the result of the processing
      * @param input
      * @param workingDirectory
      * @param containers: inf properties for containing jars, innermost jar is first on the list
      * @return
      */
     public File preProcess(File input, File workingDirectory, List containers);
     
     /**
      * Perform some processing on the input file after the JarProcessor returns from recursion
      * return the file containing the result of the processing
      * @param input
      * @param workingDirectory
      * @param containers: inf properties for containing jars, innermost jar is first on the list
      * @return
      */
     public File postProcess(File input, File workingDirectory, List containers);
     
     /**
      * Return the name of this process step
      * @return
      */
     public String getStepName();

     /**
      * Adjust any properties in the eclipse.inf as appropriate for this step
      * @param input
      * @param inf
      * @param containers: inf properties for containing jars, innermost jar is first on the list
      */
     public void adjustInf(File input, Properties inf, List containers);
 }

